//
// Created by mi on 2024/5/7.
//

#include <iostream>
#include <thread>
#include <vector>

//https://zhuanlan.zhihu.com/p/673024107 没能看明白。。。。
std::atomic<int> counter(0); // 原子计数器

// 一个简单的线程函数，增加计数器
void increment(int id) {
    for (int i = 0; i < 100; ++i) {
        counter.fetch_add(1, std::memory_order_relaxed); // 使用memory_order_relaxed增加计数器
    }
    std::cout << "线程ID " << id << " 运行结束，它现在看到的值： " << counter.load(std::memory_order_relaxed) << std::endl;
    std::cout << ""<< std::endl;
}

int main() {
    const int num_threads = 10;
    std::vector<std::thread> threads;

    // 创建并启动线程
    for (int i = 0; i < num_threads; ++i) {
        threads.emplace_back(increment, i);
    }

    // 等待所有线程完成
    for (auto& t : threads) {
        t.join();
    }

    // 输出最终的计数器值
    std::cout << "最终的计数结果：-----" << counter.load(std::memory_order_relaxed) << std::endl;

    return 0;
}